#include <sys/select.h>
#include <unistd.h>
#include <stdio.h>
#include <vector>
#include "Select.hpp"
#include "Socket.hpp"
// int main()
// {
//     fd_set read_fds;
//     FD_ZERO(&read_fds);    //将监听事件位全部清除
//     FD_SET(0, &read_fds);  //设置对应的位置文件描述符

//     for(;;)
//     {
//         printf("> ");
//         fflush(stdout);
//         int ret = select(1, &read_fds, nullptr, nullptr, nullptr);
//         if(ret < 0)
//         {
//             perror("select");
//             continue;
//         }
//         if(FD_ISSET(0, &read_fds))
//         {
//             char buffer[1024] = {0};
//             read(0, buffer, sizeof(buffer) - 1);
//             printf("input: %s", buffer);
//         }
//         else
//         {
//             perror("The reason: ");
//             continue;
//         }
//         FD_ZERO(&read_fds);
//         FD_SET(0, &read_fds);
//     }

//     return 0;
// }

int main()
{
    Selector selectmodule;
    SocketModule::TcpSocket readfd(0);
    selectmodule.Add(readfd);
    while (1)
    {
        std::vector<SocketModule::TcpSocket> out;
        if (selectmodule.Wait(&out))
        {
            for (int i = 0; i < out.size(); i++)
            {
                char buffer[1024];
                read(out[i].GetSocket(), buffer, sizeof(buffer) - 1);
                printf("%s\n", buffer);
            }
        }
    }
}